package com.fanshe;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

public class ReflectDemo1 {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
        // 得到字节码文件
        Class<?> c = Class.forName("com.fanshe.Student");
        // 获取所有公共构造方法
        // Constructor<?>[] cons = c.getConstructors();
        // 获取所有的构造方法，包括私有构造方法
        Constructor<?>[] cons = c.getDeclaredConstructors();
        for (Constructor con : cons) {
            System.out.println(con);
        }

        // 获取单个公共构造方法
        Constructor<?> con = c.getConstructor();
        // Constructor提供了一个类的单个构造函数的信息和访问权限
        // 反射创建对象
        Object obj = con.newInstance();
        System.out.println(obj);

        // 获取单个构造方法(所申明的方法)
        Constructor<?> constructor = c.getDeclaredConstructor();
        System.out.println(constructor);
    }
}
